package battledo

import "strconv"

type S位置 struct {
	// 地图上的坐标
	// @alias x
	X float64
	// 地图上的坐标
	// @alias y
	Y float64
	// 地图上的坐标
	// @alias z
	Z float64
}

func (s *S位置) Clone() *S位置 {
	return &S位置{
		X: s.X,
		Y: s.Y,
		Z: s.Z,
	}
}

func (s *S位置) String() string {
	x := strconv.FormatFloat(s.X, 'f', 3, 64)
	y := strconv.FormatFloat(s.Y, 'f', 3, 64)
	z := strconv.FormatFloat(s.Z, 'f', 3, 64)
	return "$点[" + x + ", " + y + ", " + z + "]"
}

type S方位 struct {
	// 地图上的坐标
	// @alias x
	X float64
	// 地图上的坐标
	// @alias y
	Y float64
	// 地图上的坐标
	// @alias z
	Z float64
	// 单位的朝向
	// @alias 面向
	Face float64
}

func (s *S方位) Clone() *S方位 {
	return &S方位{
		X:    s.X,
		Y:    s.Y,
		Z:    s.Z,
		Face: s.Face,
	}
}

func (s *S方位) String() string {
	x := strconv.FormatFloat(s.X, 'f', 3, 64)
	y := strconv.FormatFloat(s.Y, 'f', 3, 64)
	z := strconv.FormatFloat(s.Z, 'f', 3, 64)
	face := strconv.FormatFloat(s.Face, 'f', 3, 64)
	return "$点[" + x + ", " + y + ", " + z + ", " + face + "]"
}

type S地形边界 struct {
	// @alias 左边界
	Z左边界 int16
	// @alias 右边界
	Y右边界 int16
	// @alias 下边界
	X下边界 int16
	// @alias 上边界
	S上边界 int16
}
